The present disclosure generally relates to mass digital data storage systems using flash memory technologies, and more specifically relates to techniques for efficiently distributing the resources of such systems.
Emerging portable electronic devices, such as computers, digital cameras, digital music players, cellular telephones, personal data assistants, and the like, are making increasing use of flash memories and/or flash cards. A flash card may include SSDs, SD cards, MMCs, Memory Sticks, embedded cards such as moviNAND, GBNAND, iNAND, and the like. Hosts communicate with flash memories using a flash translation layer (“FTL”). The FTL is typically stored on the flash card either in a controller or in a flash memory, and a form of firmware is used to effectively manage the card.
The FTL performs several functions such as address mapping, wear-leveling, garbage collection, and the like. An address mapping operation translates a logical address received from a host into a physical address, which will actually be used to store data within the flash memory. Wear-leveling may be implemented as a firmware technique for balancing the erase counts of physical blocks to fully utilize the lifetime of NAND flash, for example. A garbage collection operation may collect valid data of several blocks and fill in one block, freeing the originals.
A conventional flash card may perform all FTL functions in the flash controller. Unfortunately, the resources of flash controllers are generally smaller than those of hosts. Thus, a resulting execution speed of such FTL functions performed in the controller is typically slow. In some cases, the FTL functions cannot be performed at all, such as where the controller becomes overloaded.